home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1984-12-30 | 8.1 KB | 288 lines |
- 1 'update 8/30/82 11:00 am
- 10 SCREEN 0,0,0:WIDTH 80:KEY OFF:DEF SEG:POKE 106,0
- 15 DEF SEG=&H40:POKE &H17,(PEEK(&H17) AND 64)
- 20 IF FRE(0)<15000 THEN 2240
- 30 CLEAR:CLEAR ,28000:ON KEY(10) GOSUB 10000:KEY(10) ON
- 40 DEF SEG=&HE00
- 50 BLOAD"DRAW.EXE",0
- 60 DEFSTR Z
- 70 ON ERROR GOTO 1150
- 80 CLS:DIM NAMES$(1)
- 85 LOCATE 14,35:FILES"menu.bas"
- 86 GOTO 200
- 90 LOCATE 5,22:PRINT "You Must Use A Data Diskette With This
- 100 LOCATE 6,22:PRINT "Program. Insert A Formatted Diskette In
- 110 LOCATE 7,22:PRINT"Drive A and Strike Any Key To Continue
- 115 LOCATE 25,25:COLOR 0,7:PRINT " Strike <F10> To Return To Menu ";:COLOR 7,0
- 120 A$=INKEY$:IF A$="" THEN 120
- 130 LOCATE 14,35:FILES"MENU.BAS"
- 140 IF F THEN 170
- 150 CLS:LOCATE 5,26:COLOR 31,0:PRINT "You MUST Use A Data Diskette":COLOR 3,0
- 160 FOR A=1 TO 4000:NEXT :CLS:GOTO 90
- 170 DEF SEG=&HE00
- 180 BSAVE "DRAW.EXE",0,200
- 190 SAVE"DRAW.BAS",P
- 200 ON KEY(1) GOSUB 1950
- 210 ON KEY(2) GOSUB 2190
- 220 ON KEY(3) GOSUB 1930
- 230 ON KEY(4) GOSUB 1940
- 240 ON KEY(5) GOSUB 2150
- 250 ON KEY(6) GOSUB 2780
- 260 ON KEY(7) GOSUB 2180
- 270 ON KEY(8) GOSUB 2180
- 280 ON KEY(9) GOSUB 2180
- 290 ON KEY(10) GOSUB 2690
- 300 DEF SEG=0
- 310 IF (PEEK(&H410) AND 48)=48 THEN SEGMENT=&HB000 ELSE SEGMENT=&HB800
- 320 CLOSE:OPEN "PICTURE.FLE" FOR APPEND AS #1:CLOSE
- 330 LOCATE ,,1,5,7
- 340 GOSUB 2280
- 350 COLOR 7,0
- 360 GOSUB 830
- 370 GOSUB 720
- 380 DEF SEG=&HE00
- 390 CODE=0
- 400 CALL CODE
- 410 X=12:Y=40:LOCATE X,Y,1
- 420 FOR SS=1 TO 10:KEY(SS) ON:NEXT
- 430 DEF SEG:POKE 106,0
- 440 Z=INKEY$:IF Z="" THEN 420
- 450 Z1=MID$(Z,2,1):IF LEN(Z)>1 THEN 520
- 460 IF FLAG THEN PRINT Z;:Y=Y+1:GOSUB 970:GOTO 420
- 470 IF Z=CHR$(32) THEN PRINT " ";:Y=Y+1:GOSUB 970:GOTO 420
- 480 IF Z<"A" OR Z>"Y" THEN 500
- 490 LOCATE X,Y:PRINT CHR$(ARRAY%(1,ASC(Z)-64));:Y=Y+1:GOSUB 970:GOTO 420
- 500 IF Z<"a" OR Z>"y" THEN 520
- 510 LOCATE X,Y:PRINT CHR$(ARRAY%(0,ASC(Z)-96));:Y=Y+1:GOSUB 970:GOTO 420
- 520 IF Z1=CHR$(72) THEN X=X-1
- 530 IF Z1=CHR$(75) THEN Y=Y-1
- 540 IF Z1=CHR$(77) THEN Y=Y+1
- 550 IF Z1=CHR$(80) THEN X=X+1
- 560 IF Z1=CHR$(115) THEN Y=Y-10
- 570 IF Z1=CHR$(116) THEN Y=Y+10
- 580 IF Z1=CHR$(73) THEN X=X-5
- 590 IF Z1=CHR$(81) THEN X=X+5
- 600 IF Z1=CHR$(71) THEN X=1:Y=1
- 610 IF Z1=CHR$(79) THEN Y=80
- 620 IF Z1=CHR$(119) THEN GOSUB 2330:CLS:LOCATE 12,40,1:X=CSRLIN:Y=POS(0): GOSUB 830:GOSUB 720
- 630 IF Z1=CHR$(31) THEN GOSUB 1420:IF FLAG THEN GOSUB 790 ELSE GOSUB 720
- 640 IF Z1=CHR$(38) THEN GOSUB 1610:IF FLAG THEN GOSUB 790 ELSE GOSUB 720
- 650 IF Z1=CHR$(37) THEN GOSUB 2360
- 660 IF Z1=CHR$(33) THEN GOSUB 890
- 670 IF Z1=CHR$(46) THEN GOSUB 1020
- 680 IF Z1=CHR$(118) THEN GOSUB 790
- 690 IF Z1=CHR$(132) THEN GOSUB 720
- 700 IF Z=CHR$(8) THEN PRINT CHR$(29)" "CHR$(29);:Y=Y-1
- 710 GOSUB 970:LOCATE X,Y,1:GOTO 420
- 720 LOCATE 23,1:PRINT SPC(79);:LOCATE 23,1:PRINT "UPPER"CHR$(29);
- 730 FOR A=1 TO 25:LOCATE ,POS(0)+2:PRINT CHR$(ARRAY%(1,A));:NEXT
- 740 LOCATE 24,1:PRINT SPC(79);:LOCATE 24,5
- 750 FOR A=1 TO 25:LOCATE ,POS(0)+2:PRINT CHR$(A+64);:NEXT
- 760 LOCATE 25,1:PRINT SPC(79);:LOCATE 25,1:PRINT "LOWER"CHR$(29);
- 770 FOR A=1 TO 25:LOCATE ,POS(0)+2:PRINT CHR$(ARRAY%(0,A));:NEXT
- 780 FLAG=0:RETURN
- 790 LOCATE 23,1:PRINT SPC(79);
- 800 LOCATE 24,1:PRINT SPC(79);
- 810 LOCATE 25,1:PRINT SPC(79);
- 820 LOCATE 25,22:PRINT "You Are In AlphaNumeric Character Set";:FLAG=1:RETURN
- 830 CLS:COLOR 0,7
- 840 LOCATE 1,1:PRINT " <F1> Instructions And Picture Files <F4> Saves This Picture To Disk "
- 850 LOCATE 2,1:PRINT " <F2> Runs Previous Picture (memory) <F5> Alternates Graphics/Letters "
- 860 LOCATE 3,1:PRINT " <F3> Loads a Picture From Disk <F6> Clear Screen <F10> Leave This Program "
- 870 COLOR 7,0
- 880 RETURN
- 890 F=0
- 900 LOCATE ,1
- 910 CLOSE:OPEN "I",1,"PICTURE.FLE"
- 920 WHILE EOF(1)=0
- 930 INPUT#1,ZA:PRINT LEFT$(ZA,8),
- 940 WEND
- 950 CLOSE
- 960 RETURN
- 970 IF X>22 THEN X=22
- 980 IF X<4 THEN X=4
- 990 IF Y>80 THEN IF X<22 THEN X=X+1:Y=Y-80:GOTO 1010 ELSE Y=80:GOTO 1010
- 1000 IF Y<1 THEN IF X>4 THEN X=X-1:Y=Y+80:GOTO 1010 ELSE Y=1:GOTO 1010
- 1010 RETURN
- 1020 LOCATE 25,1:PRINT SPC(79);
- 1030 LOCATE 24,1:PRINT SPC(79);
- 1040 LOCATE 23,1:PRINT SPC(79);
- 1050 LOCATE 25,1:PRINT "WHAT COLORS WOULD YOU LIKE? <No,No>";
- 1060 Z1="":Z=""
- 1070 Z1=INKEY$:IF Z1="" THEN 1070
- 1080 IF Z1="," THEN F=VAL(Z):PRINT ",";:GOTO 1060
- 1090 IF Z1=CHR$(13) THEN 1140
- 1100 IF MID$(Z1,2,1)=CHR$(75) THEN 1130
- 1110 IF Z1=CHR$(8) THEN 1130
- 1120 Z=Z+Z1:PRINT Z1;:GOTO 1070
- 1130 IF LEN(Z)<1 THEN 1070 ELSE PRINT CHR$(29)" "CHR$(29);:Z=LEFT$(Z,LEN(Z)-1):GOTO 1070
- 1140 F1=VAL(Z):GOSUB 720:COLOR F,F1:RETURN
- 1150 IF ERR=61 THEN ER$="Diskette Is Full":GOTO 1330
- 1160 IF ERR=53 AND ERL=1910 THEN ER$="Insert A FriendlyWare Diskette":GOTO 1280
- 1170 IF ERR=53 AND (ERL=130 OR ERL=85) THEN F=1:RESUME NEXT
- 1180 IF ERR=53 THEN ER$="File Was Not Found":GOTO 1330
- 1190 IF ERR=64 THEN ER$="Bad File Name":GOTO 1330
- 1200 IF ERR=67 THEN ER$="Too Many Diskette Files":GOTO 1330
- 1210 IF ERR=70 THEN ER$="Diskette Is Write Protected":GOTO 1330
- 1220 IF ERR=71 THEN ER$="Close Disk Drive Cover":GOTO 1330
- 1230 IF ERR=72 THEN ER$="Disk Media Error":GOTO 1330
- 1240 IF ERR=52 THEN ER$="Bad File Name":GOTO 1330
- 1250 IF ERR=3 AND ERL=1410 THEN RESUME 180
- 1260 ON ERROR GOTO 0
- 1270 END
- 1280 LOCATE 24,1:PRINT SPC(79);
- 1290 LOCATE 23,1:PRINT SPC(79);
- 1300 LOCATE 24,30:PRINT ER$;
- 1310 LOCATE 25,1:PRINT SPC(79);
- 1320 LOCATE 25,30:PRINT "And Strike Any Key To Continue";
- 1321 DEF SEG:POKE 106,0:IF INKEY$<>"" THEN 1321
- 1322 Z=INKEY$:IF Z="" THEN 1322 ELSE RESUME 1910
- 1330 LOCATE 24,1:PRINT SPC(79);
- 1340 LOCATE 24,30:PRINT ER$;
- 1350 LOCATE 25,1:PRINT SPC(79);
- 1360 LOCATE 25,15:PRINT "Your Command Was Aborted. Strike Any Key To Try Again.";
- 1370 DEF SEG:POKE 106,0:IF INKEY$<>"" THEN 1370 ELSE DEF SEG=SEGMENT
- 1380 Z=INKEY$:IF Z="" THEN 1370
- 1390 F=1
- 1400 RESUME 1410
- 1410 RETURN
- 1420 'SAVE A SCREEN
- 1430 GOSUB 2330
- 1440 LOCATE 23,1:PRINT SPC(79);
- 1450 LOCATE 24,1:PRINT SPC(79);
- 1460 LOCATE 25,1:PRINT SPC(79);
- 1470 LOCATE 24,10:PRINT "And Then Strike The Enter Key ";
- 1480 LOCATE 23,10:PRINT "Please Enter A Name For This Picture ";
- 1490 GOSUB 1770:IF ZA=" " THEN 1440
- 1500 KEEP$=ZA+".pic
- 1510 DEF SEG=SEGMENT
- 1520 BSAVE KEEP$,480,3040
- 1530 CLOSE:OPEN "PICTURE.FLE" FOR INPUT AS #1
- 1540 WHILE EOF(1)=0
- 1550 INPUT#1,ZA
- 1560 IF KEEP$=ZA THEN 1600
- 1570 WEND
- 1580 CLOSE:OPEN "PICTURE.FLE" FOR APPEND AS #1
- 1590 WRITE#1,KEEP$
- 1600 CLOSE:GOSUB 830:RETURN
- 1610 GOSUB 2330
- 1620 LOCATE 25,1:PRINT SPC(79);
- 1630 LOCATE 24,1:PRINT SPC(79);
- 1640 LOCATE 23,1:PRINT SPC(79);
- 1650 CLS:GOSUB 830:LOCATE 4,1
- 1660 CLOSE:OPEN "I",1,"PICTURE.FLE"
- 1670 WHILE EOF(1)=0
- 1680 INPUT#1,LO$:PRINT LEFT$(LO$,8),
- 1690 WEND
- 1700 LOCATE 24,10:PRINT "And Then Strike The Enter Key ";
- 1710 LOCATE 23,10:PRINT "Please Enter The Name Of The Picture You'd Like To See ";
- 1720 GOSUB 1770
- 1730 KEEP$=ZA+".pic"
- 1740 DEF SEG=SEGMENT
- 1750 BLOAD KEEP$,480
- 1760 RETURN
- 1770 ZH=""
- 1780 DEF SEG:POKE 106,0:IF INKEY$<>"" THEN 1780
- 1790 ZI=INKEY$:IF ZI="" THEN 1790
- 1800 IF ZI=CHR$(13) THEN ZA=SPACE$(8):LSET ZA=ZH:RETURN
- 1810 IF ZI=CHR$(8) THEN 1870
- 1820 IF LEN(ZI)>1 THEN IF RIGHT$(ZI,1)=CHR$(75) THEN 1870 ELSE 1780
- 1830 IF LEN(ZH)>7 THEN 1790
- 1840 IF ZI<"a" OR ZI>"z" THEN 1860
- 1850 ZI=CHR$(ASC(ZI)-32)
- 1860 ZH=ZH+ZI:PRINT ZI;:GOTO 1790
- 1870 IF LEN(ZH)<1 THEN 1790
- 1880 PRINT CHR$(29)" "CHR$(29);:ZH=LEFT$(ZH,LEN(ZH)-1):GOTO 1790
- 1890 GOSUB 1900
- 1900 IF F=1 THEN F=0:GOTO 1890
- 1910 CLEAR ,36000:ON ERROR GOTO 1150:DEFSTR Z:RUN"menu
- 1920 KEY(1) OFF:KEY(3) OFF:KEY(4) OFF:Z=CHR$(0)+CHR$(33):RETURN 450
- 1930 FOR A=2 TO 10:KEY(A) OFF:NEXT:Z=CHR$(0)+CHR$(38):RETURN 450
- 1940 FOR A=2 TO 10:KEY(A) OFF:NEXT:Z=CHR$(0)+CHR$(31):RETURN 450
- 1950 FOR A=2 TO 10:KEY(A) OFF:NEXT:DEF SEG=SEGMENT
- 1960 BSAVE "tempory.tmp",480,3040
- 1970 CLS
- 1980 LOCATE 1,18:PRINT" DRAW COMMANDS and CONTROLS
- 1990 LOCATE 2,18:PRINT"Alt & K.............To Erase A Picture From Files
- 2000 LOCATE 3,18:PRINT"Cursor Arrows.......Moves Cursor In Any Direction
- 2010 LOCATE 4,18:PRINT"Ctrl & Arrow Left...Moves Cursor Left 10 spaces
- 2020 LOCATE 5,18:PRINT"Ctrl & Arrow Right..Moves Cursor Right 10 spaces
- 2030 LOCATE 6,18:PRINT"PgUp................Moves Cursor Up 5 Lines
- 2040 LOCATE 7,18:PRINT"PgDn................Moves Cursor Down 5 Lines
- 2050 LOCATE 8,18:PRINT"End.................Moves Cursor To End Of Line
- 2060 LOCATE 9,18:PRINT"Home................Moves Cursor Home, Upper Left
- 2070 LOCATE 10,18:PRINT"Alt & C.............Color Command, Enter No. , No.
- 2071 LOCATE 11,18:PRINT"(The First Is Foreground And Second Is Background)
- 2080 LOCATE 13,18:PRINT"The Following Names Are Pictures On This Diskette:
- 2090 LOCATE 15,1:GOSUB 890
- 2100 LOCATE 25,27:PRINT "Strike Any Key To Continue";
- 2110 A$=INKEY$:IF A$="" THEN 2110
- 2120 GOSUB 830:GOSUB 720
- 2130 DEF SEG=SEGMENT:BLOAD "tempory.tmp",480
- 2140 LOCATE X,Y,1:RETURN
- 2150 FOR A=1 TO 10:KEY(A) OFF:NEXT
- 2160 IF FLAG THEN GOSUB 720 ELSE GOSUB 790
- 2170 FOR A=1 TO 10:KEY(A) ON:NEXT:LOCATE X,Y,1:RETURN
- 2180 RETURN
- 2190 CLS
- 2200 DEF SEG=&HE00
- 2210 CODE=&H40
- 2220 CALL CODE
- 2230 LOCATE X,Y:RETURN
- 2240 CLS
- 2250 LOCATE 4,20:PRINT"Sorry But You Must Have At Least 64K Of Memory
- 2260 LOCATE 5,20:PRINT " To Use This Program"
- 2270 FOR A=1 TO 5000:NEXT:GOSUB 1890:GOTO 2270
- 2280 DIM ARRAY%(1,25)
- 2290 FOR A=0 TO 1:FOR B=1 TO 25:READ ARRAY%(A,B):NEXT:NEXT
- 2300 RETURN
- 2310 DATA 200,188,186,202,185,197,192,217,179,193,180,177,176,221,220,17,27,174,25,249,250,157,4,5,2
- 2320 DATA 201,187,205,203,204,206,218,191,196,194,195,219,178,222,223,16,26,175,24,15,248,247,6,3,1
- 2330 DEF SEG=&HE00
- 2340 CODE=0
- 2350 CALL CODE:RETURN
- 2360 FOR A=1 TO 9:KEY(A) OFF:NEXT
- 2370 GOSUB 2330:CLS:GOSUB 830:LOCATE 5,1
- 2380 CLOSE:OPEN "picture.fle" FOR INPUT AS #1
- 2390 ERASE NAMES$:DIM NAMES$(50)
- 2400 A=0
- 2410 WHILE EOF(1)=0
- 2420 INPUT#1,NAMES$(A):PRINT LEFT$(NAMES$(A),8)" ";:A=A+1
- 2430 WEND
- 2440 LOCATE 23,1:PRINT SPC(79);
- 2450 LOCATE 24,1:PRINT SPC(79);
- 2460 LOCATE 25,1:PRINT SPC(79);
- 2470 LOCATE 24,10:PRINT "And Then Strike The Enter Key ";
- 2480 LOCATE 23,10:PRINT "Please Enter Name Of Picture That You Wish To Erase ";
- 2490 GOSUB 1770:B=0
- 2500 WHILE B<>A
- 2510 IF ZA=LEFT$(NAMES$(B),8) THEN 2590
- 2520 B=B+1
- 2530 WEND
- 2540 LOCATE 23,1:PRINT SPC(79);
- 2550 LOCATE 24,1:PRINT SPC(79);
- 2560 LOCATE 25,1:PRINT SPC(79);
- 2570 LOCATE 23,10:PRINT "No Such File Name. ";:
- 2580 FOR A=1 TO 4000:NEXT:GOTO 2670
- 2590 KILL NAMES$(B)
- 2600 NAMES$(B)=""
- 2610 CLOSE:OPEN "picture.fle" FOR OUTPUT AS #1
- 2620 B=0
- 2630 WHILE B<>A
- 2640 IF NAMES$(B)<>"" THEN WRITE#1,NAMES$(B)
- 2650 B=B+1
- 2660 WEND
- 2670 IF FLAG THEN GOSUB 790 ELSE GOSUB 720
- 2680 GOSUB 2190:FOR A=1 TO 9:KEY(A) ON:NEXT:RETURN
- 2690 FOR A=1 TO 10:KEY(A) OFF:NEXT
- 2700 XLIN=CSRLIN:XPOS=POS(0):LOCATE 25,1:PRINT SPC(79);
- 2710 LOCATE 25,21:PRINT "Do You Wish To Leave This Program? <Y/N>";
- 2720 Z=INKEY$:IF Z="" THEN 2720
- 2730 IF Z="y" OR Z="Y" THEN 2770
- 2740 IF Z<>"n" AND Z<>"N" THEN 2720
- 2750 IF FLAG THEN GOSUB 790 ELSE GOSUB 720
- 2760 FOR A=1 TO 10:KEY(A) ON:NEXT:RETURN
- 2770 RETURN 1890
- 2780 FOR A=1 TO 9:KEY(A) OFF:NEXT:Z=CHR$(0)+CHR$(119):RETURN 450
- 10000 CLEAR ,36000:RUN"menu
-